﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.OleDb;
using System.Data;
using Generico.Coneccion;
using System.Data.SqlClient;

namespace Administracion.Administracion
{
    public partial class Cargar_Excel : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                var cn = new ClsConeccion();
                cn.Abrir();
                var rd = cn.EjecutarSqlDataReader("Select intIndice, varDescripcion from Indice where bExportar = 1");
                this.drop.DataSource = rd;
                drop.DataTextField = "varDescripcion";
                drop.DataValueField = "intIndice";
                drop.DataBind();
                txtFecha.Text = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString();
                cn.Cerrar();
            }
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            //string varTransaccion = Session["Transaccion"].ToString();

            if ((fileLoad.PostedFile != null) && (fileLoad.PostedFile.ContentLength > 0))
            {
                string fn = System.IO.Path.GetFileName(fileLoad.PostedFile.FileName);
                string SaveLocation = Server.MapPath("Logos") + "\\" + fn;
                try
                {
                    // Si existe el archivo lo elimino
                    if (System.IO.File.Exists(SaveLocation))
                        System.IO.File.Delete(SaveLocation);

                    fileLoad.PostedFile.SaveAs(SaveLocation);
                    Cargar(SaveLocation);
                }
                catch (Exception ex)
                {
                    Response.Write("Error: " + ex.Message);
                }
            }
            else
            {
                Response.Write("Seleccione un archivo que cargar.");
            }



        }

        private void Cargar(string path)
        {
            try
            {

                if (System.IO.File.Exists(path))
                {
                    //Dimensionar los elementos necesarios para leer y cargar los datos
                    OleDbConnection oConn = new OleDbConnection();
                    OleDbCommand oCmd = new OleDbCommand();
                    OleDbDataAdapter oDa = new OleDbDataAdapter();
                    DataSet oDs = new DataSet();
                    //Atención: Esta es la cadena de conexión. La misma lee el archivo especificado en el path
                    oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "; Extended Properties= Excel 8.0;";
                    //Abrir la conexión, y leer [Hoja 1] del archivo Excel
                    oConn.Open();
                    oCmd.CommandText = "SELECT * FROM " + "[" + this.txtHoja.Text + "$]";
                    oCmd.Connection = oConn;
                    oDa.SelectCommand = oCmd;
                    //Llenar el DataSet
                    oDa.Fill(oDs, "Migracion");
                    //Cargar la ComboBox Cliente con los datos
                    Ingresar(oDs.Tables[0]);
                    this.GridView1.DataSource = oDs.Tables[0].DefaultView;
                    //GridView1DataValueField = "ClienteCodigo";
                    GridView1.DataBind();
                    oConn.Close();

                }
            }
            catch (Exception e)
            {
                Response.Write(e.Message);
            }
        }

        private void Ingresar(DataTable dt)
        {
            switch (drop.SelectedValue)
            {
                case "1":
                    CargarCauciones(dt);
                    break;
                case "2":
                    CargarCheques(dt);
                    break;
                case "3":
                    CargarCheques(dt);
                    break;
                case "4":
                    CargarCheques(dt);
                    break;
                case "5":
                    CargarCheques(dt);
                    break;
                case "6":
                    CargarMoneda(dt);
                    break;
                case "7":
                    CargarMoneda(dt);
                    break;
                case "8":
                    CargarMoneda(dt);
                    break;
                case "9":
                    CargarBCR(dt);
                    break;
                case "15":
                    CargarPersonas(dt);
                    break;
                case "21":
                    CargarRFFiduciarias(dt);
                    break;
                case "22":
                    CargarRFFiduciarias(dt);
                    break;
                case "23":
                    CargarRFFiduciarias(dt);
                    break;
                case "24":
                    CargarTasas(dt);
                    break;
                case "25":
                    CargarTasas(dt);
                    break;
                case "26":
                    CargarTasas(dt);
                    break;
                case "27":
                    CargarTasas(dt);
                    break;
                case "28":
                    CargarTasas(dt);
                    break;
                case "18":
                case "19":
                case "20":
                    CargarTablas(dt);
                    break;

            }


        }
        #region Formatos de Archivos
        private void CargarTablas(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {
                var cn = new ClsConeccion();
                cn.Abrir();
                cn.AgregarParametros("Fecha", Convert.ToDateTime(txtFecha.Text));
                cn.AgregarParametros("Tipo", drop.SelectedItem.Text);
                cn.AgregarParametros("Descripcion", dr[0].ToString());
                if (dt.Columns.Count>1 && !Convert.IsDBNull(dr[1]))
                    cn.AgregarParametros("Indice1", Convert.ToDouble(dr[1]));
                else
                    cn.AgregarParametros("Indice1", Convert.ToDouble(0));

                if (dt.Columns.Count > 2 && !Convert.IsDBNull(dr[2]))
                    cn.AgregarParametros("Indice2", Convert.ToDouble(dr[2]));
                else
                    cn.AgregarParametros("Indice2", Convert.ToDouble(0));
                if (dt.Columns.Count > 3 && !Convert.IsDBNull(dr[3]))
                    cn.AgregarParametros("Indice3", Convert.ToDouble(dr[3]));
                else
                    cn.AgregarParametros("Indice3", Convert.ToDouble(0));

                if (dt.Columns.Count > 4 && !Convert.IsDBNull(dr[4]))
                    cn.AgregarParametros("Indice4", Convert.ToDouble(dr[4]));
                else
                    cn.AgregarParametros("Indice4", Convert.ToDouble(0));

                cn.EjecutarSp("sp_CargarTablas");
                cn.Cerrar();

            }
        }
        private void CargarCauciones(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[0].ToString() == string.Empty || dr[1].ToString() == string.Empty)
                    continue;

                var cn = new ClsConeccion();
                cn.Abrir();
                            
                cn.AgregarParametros("Indice", Convert.ToInt32(drop.SelectedValue));
                cn.AgregarParametros("Plazo", dr[0].ToString());
                cn.AgregarParametros("Vto", Convert.ToDateTime(dr[1]));
                cn.AgregarParametros("TasaUlt", Convert.ToDouble(dr[2]));
                cn.AgregarParametros("Concertado", Convert.ToDouble(dr[3]));
                cn.AgregarParametros("Fecha", Convert.ToDateTime(txtFecha.Text));
                cn.EjecutarSp("sp_ADM_NewChequeCaucion");
                cn.Cerrar();

            }

        }


        private void CargarCheques(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[0].ToString() == string.Empty || dr[1].ToString() == string.Empty)
                    continue;

                var cn = new ClsConeccion();
                cn.Abrir();
               
                cn.AgregarParametros("Indice", Convert.ToInt32(drop.SelectedValue));
                cn.AgregarParametros("Plazo", dr[0].ToString());
                cn.AgregarParametros("Vto", Convert.ToDateTime(dr[1]));
                cn.AgregarParametros("TasaMin", Convert.ToDouble(dr[2]));
                cn.AgregarParametros("TasaMax", Convert.ToDouble(dr[3]));
                cn.AgregarParametros("TasaPromedio", Convert.ToDouble(dr[4]));
                cn.AgregarParametros("Monto", Convert.ToDouble(dr[5]));
                cn.AgregarParametros("Fecha", Convert.ToDateTime(txtFecha.Text));
                cn.EjecutarSp("sp_ADM_NewCheque");
                cn.Cerrar();
            }
            
        }
        private void CargarMoneda(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[0].ToString() == string.Empty)
                    continue;

                var cn = new ClsConeccion();
                cn.Abrir();
                cn.AgregarParametros("@idMoneda", Convert.ToInt32(drop.SelectedValue)-5);
                cn.AgregarParametros("@idBanco", dr[0].ToString());
                cn.AgregarParametros("@monCompra", Convert.ToDouble(dr[2]));
                cn.AgregarParametros("@monVenta", Convert.ToDouble(dr[3]));
                cn.AgregarParametros("@datFecha", Convert.ToDateTime(txtFecha.Text));
                cn.EjecutarSp("sp_ADM_NewCotizacion");
                cn.Cerrar();
            }
        }

        private void CargarRFFiduciarias(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[0].ToString() == string.Empty)
                    continue;

                var cn = new ClsConeccion();
                cn.Abrir();
                cn.AgregarParametros("Indice", Convert.ToInt32(drop.SelectedValue));
                cn.AgregarParametros("Fidecomiso", dr[0].ToString());
                cn.AgregarParametros("Serie", dr[1].ToString());
                cn.AgregarParametros("Empresa", dr[2].ToString());
                cn.AgregarParametros("Sector", dr[3].ToString());
                cn.AgregarParametros("FechaColocacion", Convert.ToDateTime(dr[4]));
                cn.AgregarParametros("ValorNegociable", dr[5].ToString());
                cn.AgregarParametros("Moneda", dr[6].ToString());
                cn.AgregarParametros("MontoEmitido", Convert.ToDouble(dr[7]));
                cn.AgregarParametros("TasaCorte", Convert.ToDouble(dr[8]));
                cn.AgregarParametros("SobreOferta", Convert.ToDouble(dr[9]));
                cn.AgregarParametros("Calificacion", dr[10].ToString());
                cn.AgregarParametros("Duracion", Convert.ToDouble(dr[11]));
                cn.AgregarParametros("PorcentajeSubordinacion", Convert.ToDouble(dr[12]));
                cn.AgregarParametros("Fecha", Convert.ToDateTime(txtFecha.Text));
                cn.EjecutarSp("sp_ADM_NewFidecomiso");
                
                cn.Cerrar();
            }
        }

        private void CargarTasas(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[0].ToString() == string.Empty)
                    continue;

                var cn = new ClsConeccion();
                cn.Abrir();
                cn.AgregarParametros("@Indice", Convert.ToInt32(dr[0]));
                cn.AgregarParametros("@Ultimo", Convert.ToDouble(dr[2]));
                cn.AgregarParametros("@Anterior", Convert.ToDouble(dr[3]));
                cn.AgregarParametros("@Fecha", Convert.ToDateTime(txtFecha.Text));
                cn.EjecutarSp("sp_ADM_NewTasas");
                cn.Cerrar();
            }
        }
        private void CargarBCR(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[0].ToString() == string.Empty)
                    continue;

                var cn = new ClsConeccion();
                cn.Abrir();
                cn.AgregarParametros("@intIndice", Convert.ToInt32(dr[0]));
                cn.AgregarParametros("@monMontoHoy", Convert.ToDouble(dr[2]));
                cn.AgregarParametros("@monMontoAyer", Convert.ToDouble(dr[3]));
                cn.AgregarParametros("@Fecha", Convert.ToDateTime(txtFecha.Text));
                cn.EjecutarSp("sp_ADM_NewBCR");
                cn.Cerrar();
            }
        }
        private string ConvertirFecha (string fecha)
        {
        string strdia = fecha.Substring(0,2);
        string strmes = fecha.Substring(3,2);
        string stranio = fecha.Substring(6, 4);
        string resto = fecha.Substring(10);
        return stranio + strmes + strdia + resto;
        }

        private void CargarPersonas(DataTable dt)
        {
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[2].ToString() == string.Empty)
                    continue;

                var cn = new ClsConeccion();
                cn.Abrir();
                cn.AgregarParametros("@Nombre", dr[0].ToString());
                cn.AgregarParametros("@Apellido", dr[1].ToString());
                cn.AgregarParametros("@mail", dr[2].ToString());
                cn.AgregarParametros("@Telefono", dr[3].ToString());
                cn.AgregarParametros("@Profesion", dr[4].ToString());
                cn.AgregarParametros("@TipoIngreso", dr[5].ToString());
                cn.AgregarParametros("@FechaIng", Convert.ToDateTime(dr[6]));
                cn.AgregarParametros("@Domicilio", dr[7].ToString());
                cn.AgregarParametros("@Ciudad", dr[8].ToString());
                cn.AgregarParametros("@DetalleProfesion", dr[9].ToString());
                cn.AgregarParametros("@Otros", dr[10].ToString());
                cn.AgregarParametros("@news", dr[11].ToString());
                cn.EjecutarSp("sp_ADM_NewPersonas");
                cn.Cerrar();
            }
        }
        #endregion

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            Buscar();
        }


        private void Buscar()
        {
            lstBuscar.Visible = true;
            var cn = new ClsConeccion();
            cn.Abrir();
            string desde = txtFecha.Text.Substring(6, 4) + txtFecha.Text.Substring(3, 2) + txtFecha.Text.Substring(0, 2);

            cn.AgregarParametros("FechaDesde", desde + " 00:00:00");
            cn.AgregarParametros("FechaHasta", desde + " 23:59:59");
            cn.AgregarParametros("Indice", Convert.ToInt32(drop.SelectedValue));

            var rd = cn.EjecutarSpDataReader(sp());
            lstBuscar.DataTextField = "datFechaIngreso";
            lstBuscar.DataValueField = "id";
            lstBuscar.DataSource = rd;
            lstBuscar.DataBind();
            cn.Cerrar();
        }

        private string sp()
        {
            string str = string.Empty;
            switch (drop.SelectedValue)
            {
                case "1":
                    str="sp_ADM_GetCauciones";
                    break;
                case "2":
                    str = "sp_ADM_GetCheques";
                    break;
                case "3":
                    str = "sp_ADM_GetCheques";
                    break;
                case "4":
                    str = "sp_ADM_GetCheques";
                    break;
                case "5":
                    str = "sp_ADM_GetCheques";
                    break;
                case "6":
                    str = "sp_ADM_GetCheques";
                    break;
                case "7":
                    str = "sp_ADM_GetCheques";
                    break;
                case "8":
                    str = "sp_ADM_GetCheques";
                    break;
                case "9":
                    str = "sp_ADM_GetBCR";
                    break;
                case "15":
                    str = "sp_ADM_GetCheques";
                    break;

            }
            return str;
        }

        private string spDelete()
        {
            string str = string.Empty;
            switch (drop.SelectedValue)
            {
                case "1":
                    str = "sp_ADM_DeleteCauciones";
                    break;
                case "2":
                    str = "sp_ADM_DeleteCheques";
                    break;
                case "3":
                    str = "sp_ADM_DeleteCheques";
                    break;
                case "4":
                    str = "sp_ADM_DeleteCheques";
                    break;
                case "5":
                    str = "sp_ADM_DeleteCheques";
                    break;
                case "6":
                    str = "sp_ADM_DeleteCheques";
                    break;
                case "7":
                    str = "sp_ADM_DeleteCheques";
                    break;
                case "8":
                    str = "sp_ADM_GetCheques";
                    break;
                case "9":
                    str = "sp_ADM_DelBCR";
                    break;
                case "15":
                    str = "sp_ADM_DeleteCheques";
                    break;

            }
            return str;
        }
        protected void btnEliminar_Click(object sender, EventArgs e)
        {
            var cn = new ClsConeccion();

            foreach (ListItem item in lstBuscar.Items)
            {
                if (item.Selected)
                {
                    cn.Abrir();
                    cn.AgregarParametros("idCotizacion", Convert.ToInt32(item.Value));
                    cn.EjecutarSp(spDelete());
                    cn.Cerrar();

                }
            }            

            Buscar();
            Response.Write("<script> alert('Los elementos seleccionados se han eliminado correctamente');</script>");
        
        }
    }
}
